C 语言简易日志库

1#ifndef LOG_H
2#define LOG_H
3
4#include <stdio.h>
5
6
7// Log Tag
8#ifdef __linux__
9    #define LOG_TAG_VERBOSE     "\033[97;1mVERBOSE\033[0m"
10    #define LOG_TAG_DEBUG       "\033[96;1mDEBUG\033[0m"
11    #define LOG_TAG_INFO        "\033[94;1mINFO\033[0m"
12    #define LOG_TAG_WARNING     "\033[93;1mWARNING\033[0m"
13    #define LOG_TAG_ERROR       "\033[91;1mERROR\033[0m"
14#else
15    #define LOG_TAG_VERBOSE     "VERBOSE"
16    #define LOG_TAG_DEBUG       "DEBUG"
17    #define LOG_TAG_INFO        "INFO"
18    #define LOG_TAG_WARNING     "WARNING"
19    #define LOG_TAG_ERROR       "ERROR"
20#endif 
21
22
23// enum of LOG_LEVEL
24#define    LOG_LEVEL_ERROR      0
25#define    LOG_LEVEL_WARNING    1
26#define    LOG_LEVEL_INFO       2
27#define    LOG_LEVEL_DEBUG      3
28#define    LOG_LEVEL_VERBOSE    4
29
30
31// Default LOG_LEVEL
32#ifndef LOG_LEVEL
33    #define LOG_LEVEL LOG_LEVEL_INFO
34#endif // LOG_LEVEL
35
36
37#if LOG_LEVEL >= LOG_LEVEL_VERBOSE
38    #define VERBOSE(fmt, ...) fprintf(stdout, "[%s:%d][" LOG_TAG_VERBOSE "]: " fmt, __FILE__, __LINE__, ##__VA_ARGS__)
39#else
40    #define VERBOSE(fmt, ...)
41#endif
42
43#if LOG_LEVEL >= LOG_LEVEL_DEBUG
44    #define DEBUG(fmt, ...) fprintf(stdout, "[%s:%d][" LOG_TAG_DEBUG "]: " fmt, __FILE__, __LINE__, ##__VA_ARGS__)
45#else
46    #define DEBUG(fmt, ...)
47#endif
48
49#if LOG_LEVEL >= LOG_LEVEL_INFO
50    #define INFO(fmt, ...) fprintf(stdout, "[%s:%d][" LOG_TAG_INFO "]: " fmt, __FILE__, __LINE__, ##__VA_ARGS__)
51#else
52    #define INFO(fmt, ...)
53#endif
54
55#if LOG_LEVEL >= LOG_LEVEL_WARNING
56    #define WARNING(fmt, ...) fprintf(stdout, "[%s:%d][" LOG_TAG_WARNING "]: " fmt, __FILE__, __LINE__, ##__VA_ARGS__)
57#else
58    #define WARNING(fmt, ...)
59#endif
60
61#if LOG_LEVEL >= LOG_LEVEL_ERROR
62    #define ERROR(fmt, ...) fprintf(stderr, "[%s:%d][" LOG_TAG_ERROR "]: " fmt, __FILE__, __LINE__, ##__VA_ARGS__)
63#else
64    #define ERROR(fmt, ...)
65#endif
66
67#endif // LOG_H